Session-Cookie 鉴权
Session-Cookie 鉴权
Session-Cookie 认证是利用服务端的 Session(会话)和 浏览器(客户端) 的 Cookie 来实现的前后端通信认证模式。
在理解这句话之前我们先简单了解下什么是 Cookie以及什么是 Session ?
Cookie 是什么
众所周知,HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息);所以为了让服务器区分不同的客户端,就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器,而这个状态可以通过 Cookie 去实现。
特点
-
Cookie 存储在客户端,可随意篡改,不安全。
-
有大小限制,最大为 4kb。
-
有数量限制,一般一个浏览器对于一个网站只能存不超过 20 个 Cookie,浏览器一般只允许存放 300个 Cookie。
-
Android 和 IOS 对 Cookie 支持性不好。
-
Cookie 是不可跨域的,但是一级域名和二级域名是允许共享使用的(靠的是 domain)。
Session 是什么
Session 的抽象概念是会话,是无状态协议通信过程中,为了实现中断 / 继续操作,将用户和服务器之间的交互进行的一种抽象;具体来说,是服务器生成的一种 Session 结构,可以通过多种方式保存,如内存、数据库、文件等,大型网站一般有专门的 Session 服务器集群来保存用户会话;
流程
-
客户端: 用户向服务器首次发送请求。
-
服务器: 接收到数据并自动为该用户创建特定的 Session / Session ID,来标识用户并跟踪用户当前的会话过程。
-
客户端: 浏览器收到响应获取会话信息,并且会在下一次请求时带上 Session / Session ID。
-
服务器: 服务器提取后会与本地保存的 Session ID进行对比找到该特定用户的会话,进而获取会话状态。
-
至此客户端与服务器的通信变成有状态的通信。
特点
-
Session 保存在服务器上。
-
通过服务器自带的加密协议进行。